/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.Controladores;

import com.clinicariobamba.ReglasNegocio.Clases.Elemento;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesElemento;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.context.DefaultRequestContext;
import org.primefaces.event.CloseEvent;

/**
 *
 * @author Gis
 */
@ManagedBean
@ViewScoped
public class ControladorElemento implements Serializable{

    private Elemento elemento;
    private List<Elemento> lstElemento;
    
    private Elemento elementoSel;
    private List<Elemento> lstElementoFiltrados;
    
    

    public ControladorElemento() {
        this.elemento = new Elemento();
        
       
        
    }

    public List<Elemento> getLstElementoFiltrados() {
        return lstElementoFiltrados;
    }

    public void setLstElementoFiltrados(List<Elemento> lstElementoFiltrados) {
        this.lstElementoFiltrados = lstElementoFiltrados;
    }   

    
    public Elemento getElemento() {
        return elemento;
    }

    public void setElemento(Elemento elemento) {
        this.elemento = elemento;
    }

    public List<Elemento> getLstElemento(String tipo) {
        CargarElementosTipo(tipo);
        return lstElemento;
    }

    public void setLstElemento(List<Elemento> lstElemento) {
        this.lstElemento = lstElemento;
    }

    public Elemento getElementoSel() {
        return elementoSel;
    }

    public void setElementoSel(Elemento elementoSel) {
        this.elementoSel = elementoSel;
    }

    
    
    
    public void CargarElementosTipo(String tipo) {
        this.lstElemento = FuncionesElemento.obtenerElementoTipo(tipo);

    }
    
    public void insertarElemento (String tipo){
        try {
            elemento.setTipo(tipo);
            if (FuncionesElemento.insertar(elemento)) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
                        "Información", "Datos Insertados");
                FacesContext.getCurrentInstance().addMessage(null, message);
                
                if (elemento.getTipo().equals("M"))
                {
                    DefaultRequestContext.getCurrentInstance().execute("wdlgNuevoMed.hide()");
                }
                if (elemento.getTipo().equals("E"))
                {
                    DefaultRequestContext.getCurrentInstance().execute("wdlgNuevoEx.hide()");
                }
                elemento = new Elemento();
            } else {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Help", "Error al Insertar");
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
        } catch (Exception e) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Help", e.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
        }        
    }
    
    public void actualizarElemento (){
        try {
            if (FuncionesElemento.modificar(elementoSel)) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
                        "Información", "Datos Actualizados");
                FacesContext.getCurrentInstance().addMessage(null, message);
                  if (elementoSel.getTipo().equals("M"))
                {
                     DefaultRequestContext.getCurrentInstance().execute("wdlgEditarMed.hide()");
                }
                if (elementoSel.getTipo().equals("E"))
                {
                    DefaultRequestContext.getCurrentInstance().execute("wdlgEditarEx.hide()");
                }
               
                elementoSel = new Elemento();
            } else {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Help", "Error al Actualizar");
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
        } catch (Exception e) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Help", e.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
        }        
    }
    
    public void eliminarElemento (){
        try {
            if (FuncionesElemento.eliminar(elementoSel)) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
                        "Información", "Datos Eliminados");
                FacesContext.getCurrentInstance().addMessage(null, message);
               
                  if (elementoSel.getTipo().equals("M"))
                {
                     DefaultRequestContext.getCurrentInstance().execute("wdlgEliminarMed.hide()");
                }
                if (elementoSel.getTipo().equals("E"))
                {
                    DefaultRequestContext.getCurrentInstance().execute("wdlgEliminarEx.hide()");
                }
                elementoSel = new Elemento();
            } else {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Help", "Error al Eliminar");
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
        } catch (Exception e) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Help", e.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
        }        
    }
    

    
    
}
